import http from '@/utils/http';

/**
 * 货物相关接口
 */
const cargoApi = {
  /**
   * 获取货物列表
   * @param {Object} params - 查询参数
   * @returns {Promise} 请求结果
   */
  getCargoList(params = {}) {
    return http.get('/cargos', { params });
  },

  /**
   * 获取货物详情
   * @param {Number} id - 货物ID
   * @returns {Promise} 请求结果
   */
  getCargoDetail(id) {
    return http.get(`/cargos/${id}`);
  },

  /**
   * 创建货物
   * @param {Object} data - 货物数据
   * @returns {Promise} 请求结果
   */
  createCargo(data) {
    return http.post('/cargos', data);
  },

  /**
   * 更新货物
   * @param {Number} id - 货物ID
   * @param {Object} data - 货物数据
   * @returns {Promise} 请求结果
   */
  updateCargo(id, data) {
    return http.put(`/cargos/${id}`, data);
  },

  /**
   * 删除货物
   * @param {Number} id - 货物ID
   * @returns {Promise} 请求结果
   */
  deleteCargo(id) {
    return http.delete(`/cargos/${id}`);
  },

  /**
   * 批量删除货物
   * @param {Array} ids - 货物ID数组
   * @returns {Promise} 请求结果
   */
  batchDeleteCargos(ids) {
    return http.delete('/cargos/batch', { data: { ids } });
  },

  /**
   * 导入货物数据
   * @param {FormData} formData - 包含导入文件的表单数据
   * @returns {Promise} 请求结果
   */
  importCargos(formData) {
    return http.post('/cargos/import', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    });
  },

  /**
   * 导出货物数据
   * @param {Object} params - 查询参数
   * @returns {Promise} 请求结果
   */
  exportCargos(params = {}) {
    return http.get('/cargos/export', { 
      params,
      responseType: 'blob'
    });
  },

  /**
   * 更新货物状态
   * @param {Number} id - 货物ID
   * @param {String} status - 货物状态
   * @returns {Promise} 请求结果
   */
  updateCargoStatus(id, status) {
    return http.put(`/cargos/${id}/status`, { status });
  },

  /**
   * 批量更新货物状态
   * @param {Array} ids - 货物ID数组
   * @param {String} status - 货物状态
   * @returns {Promise} 请求结果
   */
  batchUpdateCargoStatus(ids, status) {
    return http.put('/cargos/batch/status', { ids, status });
  },

  /**
   * 获取货物库存
   * @param {Number} id - 货物ID
   * @returns {Promise} 请求结果
   */
  getCargoInventory(id) {
    return http.get(`/cargos/${id}/inventory`);
  },

  /**
   * 修改货物库存
   * @param {Number} id - 货物ID
   * @param {Object} data - 库存数据
   * @returns {Promise} 请求结果
   */
  updateCargoInventory(id, data) {
    return http.put(`/cargos/${id}/inventory`, data);
  },

  /**
   * 批量获取货物信息
   * @param {Array} ids - 货物ID数组
   * @returns {Promise} - 返回货物信息数组
   */
  getBatchCargoInfo(ids) {
    return http.get('/cargos/batch', { 
      params: { 
        ids: ids.join(',')
      } 
    });
  }
};

export default cargoApi; 